The present invention relates generally to the field of testing computer systems, and more specifically to a system for performing diagnostic tests on computer components in a computer system while an operating system is active.
Conventional schemes for performing diagnostic tests on components of a computer system, including the CPU, memory, storage, computer peripheral (input/output (I/O)) devices such as printers, displays, networking cards, keyboards and the like are well known. The importance of testing such devices cannot be overemphasized. Costs associated with defects in computer components and devices are relatively high due to user downtime and potential loss of data. Even where there is no downtime, the output of a defective device may be erroneous. Therefore, it is important to ensure that defective devices are quickly detected and removed to avoid the aforementioned disadvantages.
Many operating systems work with device drivers through which the operating system interfaces with the various devices in the computer. Device drivers are typically routines or programs which coordinate the flow of data to and from the devices. Operating systems such as DOS™ Windows™, etc. are pre-bundled with device drivers specific to devices which may be subsequently attached to the computer. If the computer system is to communicate with a new device, a device driver specific to that new device must be installed (if it is unavailable within the computer system). The device driver is typically supplied by the manufacturer of the device for installation on the computer system and can be loaded when the computer is booted up.
Device drivers often provide a degree of independence that simplifies the interaction of an application program with the particular device. In some instances, however, such independence is disadvantageous because access to an device can be obtained only through the associated device driver. That is, diagnostic tests on the device must be performed through the specific device driver.
Disadvantageously, while certain device drivers are capable of performing diagnostic tests, such tests are limited and more often are organized in a manner that makes the cross-comparison of diagnostic test results from one device driver to another impossible. Similarly, device drivers assigned by modern operating systems provide only limited methods for diagnostic tests to bypass or work with the device driver in order to test the device. Furthermore, diagnostic methods currently in device drivers are not in a standardized format which would allow their use by third party applications, because there is no standard for device driver diagnostics, and device drivers are written by different companies all of whom create their device drivers independently.
Therefore, it would be desirable to provide a system which is capable of handling the aforementioned problems relating to the conventional approaches for performing diagnostic tests on devices which are attached to computer systems.